package com.newly.common.core.utils.file;

import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;

/**
 * @program: file-client
 * @remark: 文件客户端规范接口
 * @author: guan
 * @create: 2021-11-05 14:19
 */
public interface IFileClient {

    /**
     * 文件上传
     *
     * @param fileName     文件名(会动态处理)
     * @param srcPath      源文件路径
     * @param relativePath 相对路劲
     * @return 上传成功后返回文件真实路径（上传后的路劲）
     */
    String upload(String fileName, String srcPath, String relativePath);

    /**
     * 文件上传,解析fileStream文件流数据上传至destPath目录中
     *
     * @param fileName     文件名
     * @param fileStream   文件流
     * @param relativePath 目标路径
     * @return 上传成功后返回文件真实路径（上传后的路劲）
     */
    String upload(String fileName, InputStream fileStream, String relativePath);

    /**
     * 文件上传，解析multipartFile文件数据上传至destPath目录中
     *
     * @param fileName      文件名
     * @param multipartFile spring 文件对象
     * @param relativePath  目标路径
     * @return 上传成功后返回文件真实路径（上传后的路劲）
     */
    String upload(String fileName, MultipartFile multipartFile, String relativePath);

    /**
     * 从filePath中下载名为fileName的文件
     *
     * @param fileName     文件名
     * @param relativePath 文件路劲
     * @return InputStream.class 文件流
     */
    String download(String fileName, String relativePath);

    /**
     * 从默认路径中下载名为fileName文件，这里指的默认路劲
     * 为配置中的磁盘路劲
     *
     * @param fileName
     * @return
     */
    String download(String fileName);
}
